# Vision

## 1. 소개

이 문서는 RVC(Robot Vacuum Cleaner) Control SW의 고수준 목표, 이해관계자, 제품 범위를 정의한다. Unified Process의 모든 후속 단계에 대한 의도의 공식 진술서 역할을 한다.

---

## 2. 문제 정의

| | |
|---|---|
| **문제는** | 반복적이고 시간이 많이 걸리는 가정 내 바닥 청소 |
| **영향을 받는 대상은** | 가정 거주자 |
| **그 영향은** | 일상적인 수동 청소에 소비되는 상당한 시간과 노력 |
| **성공적인 해결책은** | 인간 개입 없이 탐색하고, 장애물을 회피하며, 청소 전력을 조절하는 자율 RVC |

---

## 3. 이해관계자

| 이해관계자 | 역할 | 관심사 |
|---|---|---|
| End User | RVC를 운용 | 신뢰할 수 있는 자율 청소, 운용 중 개입 불필요 |
| SW Developer | RVC Control SW를 구현 | 명확한 요구사항, 잘 정의된 인터페이스, 테스트 가능한 동작 |
| HW Engineer | 센서, motor, cleaner HW를 제공 | HW와 SW가 독립적으로 개발될 수 있도록 잘 정의된 I/O 계약 |

---

## 4. 제품 개요

**RVC Control SW**는 가정 내 표면을 자율적으로 탐색하고 청소 작업을 관리하는 임베디드 제어 시스템이다. 센서 이벤트와 주기적 Timer Tick을 입력으로 받아, Motor에 Direction 명령을, Cleaner에 전력 명령을 발행한다.

SW는 HW를 전기 수준에서 직접 제어하지 **않는다**. 시스템 인터페이스 계약에 정의된 추상화된 I/O 이벤트에서만 동작한다.

### 시스템 경계

```
                        ┌─────────────────────┐
 Front Sensor ─────────>│                     │──────────> Motor (Direction)
 Left Sensor  ─────────>│   RVC Control SW    │
 Right Sensor ─────────>│                     │──────────> Cleaner (Power)
 Dust Sensor  ─────────>│                     │
 Timer (Tick) ─────────>│                     │
                        └─────────────────────┘
```

---

## 5. 주요 기능

| ID | 기능 | 설명 |
|---|---|---|
| F-01 | 자율 전진 Navigation | 기본적으로 직진하며 청소 |
| F-02 | 단일 측면 장애물 회피 | 전방만 차단 시 정지, 좌측 또는 우측으로 회전, 재개 |
| F-03 | 포위 장애물 탈출 | 전방, 좌측, 우측 모두 차단 시 후진, 회전, 재개 |
| F-04 | 적응형 청소 강도 | 먼지 감지 시 Cleaner를 일시적으로 Power Up |

---

## 6. 제약 및 범위

- HW 수준의 motor 및 센서 제어는 **범위 밖**이다; SW는 추상화된 I/O 이벤트를 통해서만 인터페이스한다.
- Ubuntu 24.04 (WSL2)에서 **C++17**로 구현된다.
- 외부 라이브러리는 추가할 수 없다.
- 향후 확장(추가 센서, 모바일 앱 통합, ML 기반 navigation)은 검토되었으나 이번 이터레이션의 **범위에 포함되지 않는다**.
